/**
 * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
 */
package com.jeesite.modules.storage.dao;

import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.storage.entity.Activity;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 营销活动DAO接口
 */
@MyBatisDao
public interface ActivityDao extends CrudDao<Activity> {

    /**
     * 查询数量【品牌Id或者分类Id】
     * @param brandId 品牌Id
     * @param cateId 分类Id
     * @return 数量【品牌Id或者分类Id】
     */
    Integer findCountByBrandIdOrCateId(@Param("brandId") String brandId,@Param("cateId") String cateId);

    /*
     * 查找所有活动
     * @return 活动列表
    */
    public List<Activity> findAllList();

    /**
     * 正在热售
     * @param offset 开端
     * @param size 每页数量
     * @return 活动列表
     */
    List<Map> findHotList(@Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 限时爆款时刻
     * @return 时刻列表
     */
    List<Date> findLimitedTimes();

    /**
     * 即将开售
     * @param offset 开端
     * @param size 每页数量
     * @return 活动列表
     */
    List<Map> findSaleList(@Param("offset") Integer offset,@Param("size") Integer size);

    /**
     * 统计汇总【阶段】
     * @return 统计汇总【阶段】
     */
    List<Map> findStages();

    /**
     * 查询活动列表
     * @param isHot 是否热播
     * @param isSale 是否预告
     * @param isToday 是否今天
     * @param isYesterday 是否昨天
     * @param isEarlier 是否更早
     * @param isTomorrow 是否明天
     * @param isAfterTomorrow 是否后天
     * @param offset 开端
     * @param size 每页数量
     * @return 活动列表
     */
    List<Map> findFilterList(@Param("isHot") Boolean isHot,@Param("isSale") Boolean isSale,@Param("isToday") Boolean isToday,@Param("isYesterday") Boolean isYesterday,@Param("isEarlier") Boolean isEarlier,@Param("isTomorrow") Boolean isTomorrow,@Param("isAfterTomorrow") Boolean isAfterTomorrow,@Param("cateId") String cateId, @Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 查询活动
     * @param activityId 活动Id
     * @return 活动
     */
    Map findById(@Param("activityId") String activityId);

    /**
     * 查找Id【类型、品牌Id、名称、开始时间以及结束时间】
     * @param type 类型
     * @param name 名称
     * @param brandId 品牌Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return Id
     */
    String findId(@Param("type") String type,@Param("brandId") String brandId,@Param("name") String name,@Param("startTime") Date startTime,@Param("endTime") Date endTime);

    /**
     * 查找品牌Id【Id】
     * @param activityId 活动Id
     * @return 品牌Id
     */
    String findBrandIdById(@Param("activityId") String activityId);

    /**
     * 查找类型【Id】
     * @param activityId 活动Id
     * @return 类型
     */
    String findTypeById(@Param("activityId") String activityId);

    /**
     * 查询分享【Id】
     * @param activityId 活动Id
     * @return 分享
     */
    Map findShareById(@Param("activityId") String activityId);

    /**
     * 搜索活动列表
     * @param keywords 关键字
     * @param offset 开端
     * @param size 每页数量
     * @return 活动列表
     */
    List<Map> findSearchList(@Param("keywords") String keywords,@Param("offset") Integer offset, @Param("size") Integer size);
}
